
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.comm.UnsupportedCommOperationException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class Jogo extends JFrame implements ActionListener, MouseListener {
	private static final long serialVersionUID = 1L;


	private Container c;
	private Tabuleiro tabuleiro;
	private Class turn;
	private JLabel eTurno;
	private JButton btSair;
	private JLink link;
        private boolean raposa;


	//construtor
	public Jogo(boolean raposa){

                this.raposa = raposa;



        	setLayout(null);
		setBounds(0,0,555,575);
		setTitle("Teleprocessamento - Jogo - Raposa e Gansos");
		//Centralizar
		setLocationRelativeTo(null);
		//Sem �cones
                //setUndecorated(true);
		c = getContentPane();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		btSair = new JButton("Sair");
		btSair.addActionListener(this);
		btSair.setBounds(395,480,100,30);
		c.add(btSair);

		//criar tabuleiro
		tabuleiro = new Tabuleiro(10,25,500,this);
		tabuleiro.setBackground(new Color(0,0,0));
		tabuleiro.addMouseListener(this);
		c.add(tabuleiro);


		//instancia eTurno
		eTurno = new JLabel("Turno dos Gansos");
		eTurno.setFont(new Font("Arial", Font.BOLD, 20));
                eTurno.setForeground(Color.RED);
		eTurno.setBounds(0,0,520,550);
                eTurno.setVerticalAlignment(SwingConstants.TOP);
                eTurno.setHorizontalAlignment(SwingConstants.CENTER);

		c.add(eTurno);

		//inicia o primeiro turn para os gansos
		turn = Ganso.class;

		setVisible(true);
		btSair.requestFocus();

	}



	private boolean isPersonagemDoTurno(Espaco e){

            Personagem p = e.getPersonagem();

            /*    if (raposa && (p)) {


                }*/


		if (e.getPersonagem() != null){
			//se for personagem do turno
			if ( (e.getPersonagem().getClass().equals( getTurn() )) ){
				return true;
			}else{
				return false;
			}
		}

		return false;

	}

	public void changeTurno(){
		if (getTurn() == Ganso.class) {
			setTurn(Raposa.class);
			eTurno.setText("Turno da Raposa");
		}else {
			setTurn(Ganso.class);
			eTurno.setText("Turno dos Gansos");
		}
		tabuleiro.setEspaco(null);

	}

	public void win(Class c){
			new Win(c);
			dispose();
	}

	public void mouseClicked(MouseEvent arg0) {


		Object o = arg0.getSource();
		//se o objeto clicado for uma inst�ncia de Espaco
		if ( o.getClass().equals( Espaco.class ) ){
			Espaco e = (Espaco)arg0.getSource();
			//se for um personagem do turno
			if (isPersonagemDoTurno(e)){
				tabuleiro.setEspaco(e);
			// se n�o
			}else{
				//se for um espa�o poss�vel, mover e trocar turno
				if (e.isMoveable()){
					tabuleiro.movePersonagem(tabuleiro.getEspaco(), e);
					
				}


			}

		}

	}


	public void mouseEntered(MouseEvent arg0) {

	}


	public void mouseExited(MouseEvent arg0) {

	}


	public void mousePressed(MouseEvent arg0) {

	}


	public void mouseReleased(MouseEvent arg0) {

	}


	public Class getTurn() {
		return turn;
	}


	public void setTurn(Class turn) {
		this.turn = turn;
	}


	public void actionPerformed(ActionEvent arg0) {
		Object o = arg0.getSource();
		if (o == btSair){
			dispose();
                        System.exit(1);
		}


	}


}
